Computers are well known for their ability to perform mathematical functions at a high rate of speed. In order to achieve such speed, computers use various techniques to perform mathematical functions on given operands. Limitations in the representation of numbers and in numerical calculations within the computer lead to computed results that are only accurate to within some known or estimated error term. The ability to perform basic functions such as addition, subtraction, multiplication, and division to a consistent accuracy in a timely manner is a consideration in computational performance of the computer system.
One technique for implementing a mathematical function is to implement the function in hardware. Math functions including addition and subtraction might be accomplished by performing the steps of 1) loading registers with the operands; 2) executing the operational code ("opcode") for the desired function; and then, 3) retrieving the result from one or more registers. The opcode is simply a command to perform the function implemented in hardware.
One disadvantage of this prior art technique is that some functions, such as division, typically require several cycles for completion which in turn tends to adversely affect system performance.
An alternative method of computing other results, such as reciprocals ##EQU1##
often involves looking the result up in a table. For example, the steps for computing a reciprocal might include 1) scaling or normalizing an operand; 2) looking up a reciprocal value corresponding to the normalized value in a lookup "seed" table; and 3) scaling or denormalizing the looked up value to reflect the reciprocal of the denormalized operand. The lookup table is typically stored in a read only memory (ROM). The error associated with this technique is controlled to a great extent by the "height" and "width" or the precision of the entry in the lookup table.
One disadvantage of the conventional lookup approach is that the area required to store the lookup table on the integrated circuit may prevent the lookup approach from being a cost effective technique for given precision requirements.
A cost effective way of implementing mathematical functions such as reciprocal or division to within a consistent error margin in a given time frame is a desirable feature of a computer system.